﻿#include <iostream>
#include <string>
using namespace std;

namespace ouyang
{
	// string 的了解和使用

	// 定义和初始化

	// string();
	string s1;

	// string (const string& str);
	// 拷贝构造
	string s2(s1);

	// string (const char* s);
	string s3("Hello ouyang");

	// template <class InputIterator>
	//string(InputIterator first, InputIterator last);

}

// 比较字符串应该是strcmp
//int main()
//{
//	string a = "hello world";
//	string b = a;
//	// 比较的是地址
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//	string c = b;
//	c = "";
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//	a = "";
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//	return 0;
//}

class Solution {
public:
	string reverseStr(string s, int k) {
		for (int i = 0; i < s.size(); i += (2 * k))
		{
			// 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
			if (i + k <= s.size())
			{
				reverse(s.begin() + i, s.begin() + i + k);
				continue;
			}
			// 如果剩余字符少于 k 个，则将剩余字符全部反转。
			reverse(s.begin() + i, s.end());
		}
		return s;
	}
};

class Solution {
public:
	// 转变为小写字母
	void to_lower(string& s)
	{
		for (size_t i = 0; i < s.size(); ++i)
		{
			if (s[i] >= 'A' && s[i] <= 'Z')
				s[i] += 32;
		}
	}
	// 判断是否为小写字母和数字，这样是为了防止跳过数字
	bool is_lower(const char ch)
	{
		return (ch >= 'a' && ch <= 'z')
			|| (ch >= '0' && ch <= '9');
	}

	bool isPalindrome(string s) {
		int left = 0;
		int right = s.size() - 1;
		// 全部转换为小写
		to_lower(s);
		while (left < right)
		{
			while (left < right && !(is_lower(s[left])))
				++left;
			while (left < right && !(is_lower(s[right])))
				--right;
			if (s[left] != s[right])
				return false;
			else {
				++left;
				--right;
			}
		}
		return true;
	}
};



int main()
{
	string strText = "How are you?";
	string strSeparator = " ";
	string strResult;
	int size_pos = 0;
	int size_prev_pos = 0;
	while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)
	{
		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
		cout << strResult << " ";  // How
		size_prev_pos = ++size_pos; // ->a
	}
	if (size_prev_pos != strText.size())
	{
		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
		cout << strResult << " ";
	}
	cout << endl;
	return 0;
}
